package model.primitive;

import java.util.List;

import javax.vecmath.Point2f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3d;

import model.ray.Ray;
import model.shader.Shader;

public abstract class Primitive {
	private Shader shader;
	private String name;
	public int getRefractK;
	public int getReflectRay;
	
	public Primitive( Shader shader, String name){
		this.shader=shader;
		this.name=name;
	}

	//Atencion: ahora "intersectsWithRay" retorna una lista de puntos con los cuales intersecta el rayo
	public abstract List<Point3d> getIntersections(Ray ray);
	
	public abstract void translate(Point3d pos);
	
	public abstract Vector3d getNormal(Point3d pos);
	
	public abstract void rotatex(Double degree);
	public abstract void rotatey(Double degree);
	public abstract void rotatez(Double degree);
	
	public abstract void scalex(Double sx);
	public abstract void scaley(Double sy);
	public abstract void scalez(Double sz);
	public abstract void scaleu(Double su);
	
	public Shader getShader() {
		return shader;
	}

	public String getName() {
		return name;
	}
	
	//public abstract Point3d getMapColor( Point3d p);
	
	public abstract Point2f getUV(Point3d p);
}
